from django.core.mail import send_mail
from celery_tasks.main import celery_app
from django.conf import settings
import logging

logger = logging.getLogger('django')


# 定义任务
# 使用装饰器装饰异步任务，保证celery识别任务
# bind : 保证task对象会作为第一个参数自动传入
# name : 异步任务别名
# retry_back0ff : 异常自动充实的时间间隔 第n次（retry_backoff x 2^(n-1)）s
# max_retries : 异常自动重试次数的上限

@celery_app.task(bind=True, name='send_verify_email', retry_backoff=3)
def send_verify_email(self, to_email, verify_url):
    """
    发送验证邮件的异步任务
    send_mail('标题', '普通邮件正文', '发件人', '收件人列表', '富文本邮件正文(html)')
    """
    subject = "贺蒲商城邮箱验证"
    html_message = '<p>尊敬的用户您好！</p>' \
                   '<p>感谢您使用贺蒲商城。</p>' \
                   '<p>您的邮箱为：%s 。请点击此链接激活您的邮箱：</p>' \
                   '<p><a href="%s">%s<a></p>' % (to_email, verify_url, verify_url)

    try:
        send_mail(subject, "", settings.EMAIL_FROM, [to_email], html_message=html_message)
    except Exception as e:
        logger.error(e)
        # 有异常自动重试 最多三次
        raise self.retry(exc=e, max_retries=3)

# @celery_app.task(name='send_verify_email')
# def send_verify_email(to_email, verify_url):
#     """
#     发送验证邮件的异步任务
#     send_mail('标题', '普通邮件正文', '发件人', '收件人列表', '富文本邮件正文(html)')
#     """
#     subject = "贺蒲商城邮箱验证"
#     html_message = '<p>尊敬的用户您好！</p>' \
#                    '<p>感谢您使用贺蒲商城。</p>' \
#                    '<p>您的邮箱为：%s 。请点击此链接激活您的邮箱：</p>' \
#                    '<p><a href="%s">%s<a></p>' % (to_email, verify_url, verify_url)
#
#     send_mail(subject, "", settings.EMAIL_FROM, [to_email], html_message=html_message)
